home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_08_05
/
8n05054a
< prev
next >
Wrap
Text File
|
1990-04-17
|
1KB
|
60 lines
*****Listing 3*****
class Register {
public:
// move point forward one character
virtual void go( Buffer &b, File &output)
{
if( b.isend() )
output.put( "?\n" );
else
b.next();
}
// print character after point and move point forward
virtual void print( Buffer &b, File &output)
{
if( b.isend() )
output.put( "?\n" );
else
output.put( b.geta());
go(); // Register::go()
}
// insert after point
virtual void insert( Buffer &b, File &input)
{
int c;
int prev = '\n';
while( !input.iseof() ) {
c = input.get();
if( (prev == '\n') && (c == '.') )
if( input.peek() == '\n' ) {
input.get();
break;
}
b.putb( c);
prev = c;
}
}
virtual void del( Buffer &b, Buffer &kbuf, File &output)
{
if( b.isend() )
output.put( "?\n" );
else {
// need to capture deletion into kill buf
// empty out the kbuf ...
for( kbuf.begin(); !kbuf.isend(); kbuf.next())
kbuf.dela();
kbuf.putb( b.dela());
}
}
virtual void put( Buffer &b, Buffer &kbuf)
{ b.putb( kbuf.geta()); }
// no need for data members. defaults are implicit!
};